package keeto.com.vn.bms.config;

import java.util.ArrayList;
import java.util.Set;

import keeto.com.vn.bms.model.HospitalRecordInputDataModel;
import keeto.com.vn.bms.model.InputDataModel;
import keeto.com.vn.bms.model.User.EditUserModel;
import keeto.com.vn.bms.network.IBMSProtocol;
import keeto.com.vn.bms.utils.BMSListener;

import android.content.Context;

public interface IBMSCore {
	IBMSProtocol getProtocol();

	Context getContext();

	String getAuthKey();

	Set<BMSListener> copyAndReconstructListeners(BMSListener listener);

	public boolean isNetworkFail();

	void stopThreads();

	// void heartbeat();

	public void stopCoreAndDestroy();

	int taskLogon(String username, String password, BMSListener listener);

	int taskLogout(String Authkey, BMSListener bmsListener);

	public int taskGetTypeUser(String authenKey, int Group_id,int pageLimit, int pageNumber, BMSListener listener);

	int taskGetSchedule(String authenKey, BMSListener listener);

	int taskGetAndroidUserInfo(String authKey, BMSListener listener);

	int taskEditUserInfo(EditUserModel editUserModel, String AuthKey,
			BMSListener listener);

	int taskgetListSurgery(int sortby, int groupby, String ObjId,
			String AuthKey, int pageLimit, int pageNumber, BMSListener listener);

	int taskGetHopital(String authenKey, BMSListener listener);

	int taskGetComment(String authenKey, String Schedule_id, String pageLimit,
			String pageNumber, BMSListener listener);

	int taskGetDetailSergery(String id, String AuthKey, BMSListener listener);

	int taskAddTechnical(String Schedule_id, String User_id, String AuthKey,
			BMSListener listener);

	int taskSentStatusSchedule(String ID, String Status, String AuthKey,
			BMSListener listener);

	int taskGetListCompany(String authenKey, BMSListener listener);

	int taskGetListMedicalRecord(String authenKey, BMSListener listener);

	int taskGetListNotify(String AuthKey, int pageLimit, int pageNumber,
			BMSListener listener);

	int taskSendComment(String Schedule_id, String Content, String title,
			String Comment_date, String AuthKey, BMSListener listener);

	int taskSendToAdmin(String Content, String title, String group_Id,
			String AuthKey, BMSListener listener);

	int taskGetListMesseger(int Type, int pageLimit, int pageNumber,
			String Authkey, BMSListener listener);

	int taskGetDetailMesseger(String Msg_id, String AuthKey, int pagelimit,
			int pagenumber, BMSListener listener);

	int taskSendMesseger(String UserId, String GroupsId, String Content, String Title,
			String AuthKey, BMSListener listener);

	int taskGetListCourses(int pageLimit, int pageNumber, BMSListener listener);

	int taskGetListPromotions(int pageLimit, int pageNumber,
			BMSListener listener);

	int taskGetListProduct(int pageLimit, int pageNumber, BMSListener listener);

	int taskGetListSeminar(int pageLimit, int pageNumber, BMSListener listener);

	int taskCreateSchedule(String authenKey, String code, String name,
			int User_id, String Execute_date, String Price, int Hospital_id,
			String Address, String Require, int Level, int Case_id,
			String AddInfos, String TypeCost, int SchedUserRole_id,
			BMSListener listener);

	int taskGetAndroidNotifications(String AuthenKey, BMSListener listener);

	int taskUpdateAndroidSchedule(String Code, String Name, String Price,
			String Execute_date, String AuthKey, int Hospital_id,
			String Address, int Level, int Case_id, String AddInfos,
			int SchedUserRole_id, String TypeCost, String ID, String Require,
			int User_id, BMSListener listener);

	int taskGetDetailBMSProduct(String ID, int TypeBMS, BMSListener listener);

	int taskGetDetailReportByType(int type, String ObjId, int SortBy,
			String DateStart, String DateEnd, String AuthKey,
			BMSListener listener);

	int taskGetDetailReportFile(int type, String CompanyId, String CaseId,
			String DateStart, String DateEnd, String Authkey,
			BMSListener listener);

	int taskDeleteTechnical(String authenKey, String ID, String reason,
			BMSListener listener);

	int taskGetSupport(String authKey, BMSListener listener);

	int taskGetComDoctor(String authKey,String Date, String comID, BMSListener listener);

	int taskSendUpdateComDoctor(ArrayList<InputDataModel> Data, String Date, String AuthKey,
			BMSListener listener);
	int taskGetListComHospital(String Date,String companyID,String AuthKey,BMSListener listener);
	int taskGetListMedicalRecordFollowHos(String Date,String Company_id,String Hospital_id, String AuthenKey,BMSListener listener);
	int taskSendUpdateHosAndRecord(String Con_hos_id,String Revenue,ArrayList<HospitalRecordInputDataModel> DataRecord, String Date, String AuthKey,
			BMSListener listener);
	int taskSetReadNotify(String id, String AuthKey, BMSListener listener);
	int GetTimeNotification(BMSListener listener);
	int taskSetReadMessage(String id, String AuthKey, BMSListener listener);
	int taskSendDeleteNotify(String listId, String AuthKey, BMSListener listener);
	int taskSendDeleteMessager(String listId, String AuthKey, BMSListener listener);
	int taskGetMessegertwoGroup(String ObjId, String AuthKey,int pageLimit, int pageNumber,BMSListener listener);
	int taskSendMsgtoGroups(String title, String Content, String groupId,String authKey , BMSListener listener);
	int taskGetChatHints(String AuthKey, BMSListener listener);
	int taskDeleteMsg(String Id, String AuthKey, BMSListener listener);
}
